package com.lqk.demo.jmm.visibility;

import lombok.extern.slf4j.Slf4j;

import static com.lqk.demo.n2.util.Sleeper.sleep;

/**
 * @author lqk
 * @date 2021/12/26 13:02
 *
 * volatile（易变关键字）
 *  它可以用来修饰成员变量和静态成员变量，他可以避免线程从自己的工作缓存中查找变量的值，必须到主存中获取
 *  它的值，线程操作 volatile 变量都是直接操作主存
 */
@Slf4j
public class TestVisibility2 {
    // 易变关键字，修饰成员变量和静态成员变量
    volatile static boolean run = true;

    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while (run){

            }
        });
        t.start();
        sleep(1);

        log.debug("停止线程t");
        run = false;    // 线程停止
    }
}
